package com.xnyzc.lhy.finance.entity.invoice;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

/**
*
* 发票表
*
* @author haoyfa
* @since 2019-10-26
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="OaSysInvoiceInfo对象", description="发票表")
public class OaSysInvoiceInfo implements Serializable {

private static final long serialVersionUID = 1L;

    @TableId(value="invoice_info_id", type = IdType.INPUT)
    private Long invoiceInfoId;

    @ApiModelProperty(value = "发票申请ID")
    private Long invoiceApplyId;

    @ApiModelProperty(value = "发票代码")
    private String invoiceCode;

    @ApiModelProperty(value = "发票号码")
    private String invoiceNo;

    @ApiModelProperty(value = "开票日期")
    private Date invoiceDate;

    @ApiModelProperty(value = "税控码")
    private String taxControlCode;

    @ApiModelProperty(value = "校验码")
    private String invoiceCheckCode;

    @ApiModelProperty(value = "二维码")
    private String invoiceQrCode;

    @ApiModelProperty(value = "文件路径")
    private String fileUrl;

    @ApiModelProperty(value = "发票状态.当前开票状态，1: 开票中 2: 已开票 3: 冲红中 4: 已作废")
    private String invoiceStatus;

    @ApiModelProperty(value = "失败原因")
    private String applyFailReason;

    @ApiModelProperty(value = "发票种类编码.004:增值税专用发票，007:增值税普通发票，026：增值税电子发票，025：增值税卷式发票")
    private String invoiceTypeCode;

    @ApiModelProperty(value = "特殊票种标记.00：普通发票 02：农业发票 06：抵扣通行费 07：其他通行费 08：成品油  默认：00")
    private String invoiceSpecialMark;

    @ApiModelProperty(value = "销方单位税号")
    private String sellerTaxNo;

    @ApiModelProperty(value = "开票点编码")
    private String invoiceTerminalCode;

    @ApiModelProperty(value = "销方名称")
    private String sellerName;

    @ApiModelProperty(value = "销方银行账号")
    private String sellerBankAccount;

    @ApiModelProperty(value = "销方地址电话")
    private String sellerAddressPhone;

    @ApiModelProperty(value = "组织机构代码.不为空表示所开票归属于当前机构")
    private String organizationCode;

    @ApiModelProperty(value = "购方单位税号")
    private String buyerTaxNo;

    @ApiModelProperty(value = "购方单位名称")
    private String buyerName;

    @ApiModelProperty(value = "购方地址及电话.专票必填")
    private String buyerAddressPhone;

    @ApiModelProperty(value = "购方开户行及账号.专票必填")
    private String buyerBankAccount;

    @ApiModelProperty(value = "开票人.电子发票8个字符；专普票16个字符")
    private String drawer;

    @ApiModelProperty(value = "复核人.电子发票8个字符；专普票16个字符")
    private String checker;

    @ApiModelProperty(value = "收款人.电子发票8个字符；专普票16个字符")
    private String payee;

    @ApiModelProperty(value = "开票类型.0:正数发票（蓝票） 1：负数发票（红票）")
    private String invoiceType;

    @ApiModelProperty(value = "开票种类 1个人2公司")
    private String invoiceClass;

    @ApiModelProperty(value = "红字信息表编号.开具红字信息表")
    @TableField("redInfo_no")
    private String redinfoNo;

    @ApiModelProperty(value = "原发票代码(开红票时传入)")
    @TableField("originalInvoice_code")
    private String originalinvoiceCode;

    @ApiModelProperty(value = "原发票号码(开红票时传入)")
    @TableField("originalInvoice_no")
    private String originalinvoiceNo;

    @ApiModelProperty(value = "清单标志.0：无清单 1：带清单 （发票明细大于等于8行必须带清单）”")
    @TableField("invoiceList_mark")
    private String invoicelistMark;

    private BigDecimal deductibleAmount;

    @ApiModelProperty(value = "合计金额.保留两位小数")
    private BigDecimal invoiceTotalPrice;

    @ApiModelProperty(value = "合计税额.保留两位小数")
    private BigDecimal invoiceTotalTax;

    @ApiModelProperty(value = "价税合计.保留两位小数.")
    @TableField("invoice_total_priceTax")
    private BigDecimal invoiceTotalPricetax;

    @ApiModelProperty(value = "通知单编号")
    private String notificationNo;

    @ApiModelProperty(value = "签名值参数")
    private String signatureParameter;

    @ApiModelProperty(value = "商品编码版本号")
    private String goodsCodeVersion;

    @ApiModelProperty(value = "综合税率")
    private BigDecimal consolidatedTaxRate;

    @ApiModelProperty(value = "备注")
    private String remarks;

    @ApiModelProperty(value = "扩展字段1")
    private String expand1;

    @ApiModelProperty(value = "扩展字段2")
    private String expand2;

    @ApiModelProperty(value = "扩展字段3")
    private String expand3;

    @ApiModelProperty(value = "版本号")
    @Version
    private Long version;

    @ApiModelProperty(value = "是否删除(0:否,1:是)")
    @TableLogic
    private Integer deleted;

    @ApiModelProperty(value = "调整发起人")
    private Long createUser;

    @ApiModelProperty(value = "调整发起时间")
    private Date createTime;

    @ApiModelProperty(value = "更新人")
    private Long updateUser;

    @ApiModelProperty(value = "更新时间")
    private Date updateTime;


    public static final String INVOICE_INFO_ID = "invoice_info_id";

    public static final String INVOICE_APPLY_ID = "invoice_apply_id";

    public static final String INVOICE_CODE = "invoice_code";

    public static final String INVOICE_NO = "invoice_no";

    public static final String INVOICE_DATE = "invoice_date";

    public static final String TAX_CONTROL_CODE = "tax_control_code";

    public static final String INVOICE_CHECK_CODE = "invoice_check_code";

    public static final String INVOICE_QR_CODE = "invoice_qr_code";

    public static final String FILE_URL = "file_url";

    public static final String INVOICE_STATUS = "invoice_status";

    public static final String INVOICE_TYPE_CODE = "invoice_type_code";

    public static final String INVOICE_SPECIAL_MARK = "invoice_special_mark";

    public static final String SELLER_TAX_NO = "seller_tax_no";

    public static final String INVOICE_TERMINAL_CODE = "invoice_terminal_code";

    public static final String SELLER_NAME = "seller_name";

    public static final String SELLER_BANK_ACCOUNT = "seller_bank_account";

    public static final String SELLER_ADDRESS_PHONE = "seller_address_phone";

    public static final String ORGANIZATION_CODE = "organization_code";

    public static final String BUYER_TAX_NO = "buyer_tax_no";

    public static final String BUYER_NAME = "buyer_name";

    public static final String BUYER_ADDRESS_PHONE = "buyer_address_phone";

    public static final String BUYER_BANK_ACCOUNT = "buyer_bank_account";

    public static final String DRAWER = "drawer";

    public static final String CHECKER = "checker";

    public static final String PAYEE = "payee";

    public static final String INVOICE_TYPE = "invoice_type";

    public static final String REDINFO_NO = "redInfo_no";

    public static final String ORIGINALINVOICE_CODE = "originalInvoice_code";

    public static final String ORIGINALINVOICE_NO = "originalInvoice_no";

    public static final String INVOICELIST_MARK = "invoiceList_mark";

    public static final String DEDUCTIBLE_AMOUNT = "deductible_amount";

    public static final String INVOICE_TOTAL_PRICE = "invoice_total_price";

    public static final String INVOICE_TOTAL_TAX = "invoice_total_tax";

    public static final String INVOICE_TOTAL_PRICETAX = "invoice_total_priceTax";

    public static final String NOTIFICATION_NO = "notification_no";

    public static final String SIGNATURE_PARAMETER = "signature_parameter";

    public static final String GOODS_CODE_VERSION = "goods_code_version";

    public static final String CONSOLIDATED_TAX_RATE = "consolidated_tax_rate";

    public static final String REMARKS = "remarks";

    public static final String EXPAND1 = "expand1";

    public static final String EXPAND2 = "expand2";

    public static final String EXPAND3 = "expand3";

    public static final String VERSION = "version";

    public static final String DELETED = "deleted";

    public static final String CREATE_USER = "create_user";

    public static final String CREATE_TIME = "create_time";

    public static final String UPDATE_USER = "update_user";

    public static final String UPDATE_TIME = "update_time";

}
